6.5 SDM联合建模
6.5.1 sdm_PACKAGE
file <- system.file("external/pa_df.csv", package="sdm")
df <- read.csv(file)
head(df)
d <- sdmData(sp~b15+NDVI,train=df)
d
d <- sdmData(sp~.,train=df)
d
file <- system.file("external/pa_df_with_xy.csv", package="sdm")
df <- read.csv(file)
head(df)
d <- sdmData(sp~b15+NDVI+categoric1+categoric2+coords(x+y),train=df)
d
d <- sdmData(sp~b15+NDVI+f(categoric1)+f(categoric2)+coords(x+y),train=df)
d
d <- sdmData(sp~.+coords(x+y),train=df)
file <- system.file("external/multi_pa_df.csv", package="sdm")
df <- read.csv(file)
head(df)
d <- sdmData(~.+coords(x+y),train=df)
d
d <- sdmData(sp1+sp2+sp3~b15+NDVI+f(categoric1) + coords(x+y),train=df)
file <- system.file("external/predictors.grd", package="sdm")
r <- brick(file)
r
plot(r)
d <- sdmData(sp1+sp2+sp3~b15+NDVI,train=p,predictors = r)
library(raster)
library(tidyverse )
library(dismo)
library(SDMtune)
library(sdm)
setwd("E:\\闲鱼项目\\14赤皮青冈\\")
cpqg <- read.csv("E:\\闲鱼项目\\14赤皮青冈\\建模最终使用的物种分布数据.csv")
cpqg <- cpqg[,1:3]
biox <- paste("E:/闲鱼项目/14赤皮青冈/建模数据/气候建模数据集/","wc2.0_bio_30s_",c("02","07","11","12","14","15"),".tif.asc",sep = "")
bios <- stack(biox)
re_cpqg <- raster::extract(bios,cpqg[,2:3])
re2 <- cbind(cpqg[,2:3],re_cpqg) %>% na.omit(.)
bg_cpqg <- read.csv("./建模数据/建模最终使用的背景分布数据.csv")[,2:3]
bg_sd <- raster::extract(bios,bg_cpqg)
bg2 <- cbind(bg_cpqg,bg_sd) %>% na.omit(.)
c1 <- rep(1,dim(re2)[[1]])
c2 <- rep(0,dim(bg2)[[1]])
sp <- c(c1,c2) %>% data.frame(.)
names(re2)[1:2] <- c("x","y")
names(sp) <- "sp"
df <- rbind(re2,bg2) %>% cbind(.,sp) %>% data.frame(.)
head(df)
names(df)
biox <- paste("",
"wc2.0_bio_30s_",c("02","07","11","12","14","15"),".tif.asc",sep = "")
bios <- raster::stack(biox)
setwd("E:/闲鱼项目/14赤皮青冈/建模数据/气候建模数据集/")
bio1 <- raster("./wc2.0_bio_30s_02.tif.asc")
bio2 <- raster("./wc2.0_bio_30s_07.tif.asc")
bioxx <- brick(bio1,bio2)
d <- sdmData(sp~.+coords(x+y),train=df)
m <- sdm(sp~.,data=d,methods=c('rf'),replicatin='boot',n=4)
p1 <- ensemble(m, newdata=bios, filename='ens.img',setting=list(method='weighted',stat='AUC'))
plot(p1)
p2 <- ensemble(m, newdata=preds, filename='ens2.img',setting=list(method='weighted',
stat='TSS',opt=2))
plot(p2)
6.5.2 SSDM
library(SSDM)
library(raster)
gui()
xh_na <- as.data.frame(read.csv("D:/XH/第二阶段/xh/na.csv")[,2:3])
xh_as <- as.data.frame(read.csv("D:/XH/第二阶段/xh/as3.csv")[,2:3])
xh_eu <- as.data.frame(read.csv("D:/XH/第二阶段/xh/eu.csv")[,2:3])
xh_au <- as.data.frame(read.csv("D:/XH/第二阶段/xh/au.csv")[,2:3])
xh_sa <- as.data.frame(read.csv("D:/XH/第二阶段/xh/sa.csv")[,2:3])
occs <- list(xh_sa,xh_as,xh_au,xh_na,xh_eu)
names(occs) <- c("sa","as","au","na","eu")
sa_envs <- stack(list.files("D:/XH/fifth/sa_area/",pattern = "asc",full.names =T))
as_envs <- stack(list.files("D:/XH/fifth/as_area/",pattern = "asc",full.names =T))
eu_envs <- stack(list.files("D:/XH/fifth/eu_area/",pattern = "asc",full.names =T))
au_envs <- stack(list.files("D:/XH/fifth/au_area/",pattern = "asc",full.names =T))
na_envs <- stack(list.files("D:/XH/fifth/na_area/",pattern = "asc",full.names =T))
par(mfrow = c(2, 2), mar = c(2, 2, 3, 1))
sa_e <- extent(sa_envs$BIO12)
plot(sa_envs$BIO12, xlim=c(sa_e@xmin-1,sa_e@xmax-5), ylim=c(sa_e@ymin-1,sa_e@ymax+1),legend = FALSE)
points(xh_sa,pch =21,col="red",cex =1)
as_e <- extent(as_envs$BIO12)
plot(as_envs$BIO12, xlim=c(as_e@xmin-1,as_e@xmax-5), ylim=c(as_e@ymin-1,sa_e@ymax+1),legend = FALSE)
points(xh_sa,pch =21,col="red",cex =1)
bg.xy <- dismo::randomPoints(sa_envs$BIO12, 2000,p= xh_sa)
bg_xy <- as.data.frame(bg.xy,colnames(c("long","lat")))
names(bg_xy) <- c("longitude","latitude")
pa <-c(rep(1,nrow(occs$sa)),rep(0,nrow(bg_xy)))
occ_sa <- cbind(rbind(occs$sa,bg_xy),pa)
PA= list('nb'=2000,'strat'="disk")
cv = 'k-fold'
cv.param = c(4,5)
metric = 'TSS'
axes.metric = "prop.correct"
select.metric = c("AUC")
select.thresh = c(0.75)
head(occ_sa)
sa_enm_glm <- modelling('GLM',occs$sa, Env =sa_envs,Xcol = 'longitude',
Ycol = 'latitude',PA= list('nb'=2000,'strat'="random"),
cv = "k-fold",cv.param = c(4,5),metric = "TSS",axes.metric = "prop.correct" ,
verbose = FALSE)
sa_enm_maxent <- modelling('MAXENT',occs$sa, Env =sa_envs,Xcol = 'longitude',
Ycol = 'latitude',PA= list('nb'=2000,'strat'="random"),
cv = "k-fold",cv.param = c(4,5),metric = "TSS",axes.metric = "prop.correct" ,
verbose = FALSE)
sa_enm_rf <- modelling('RF',occs$sa, Env =sa_envs,Xcol = 'longitude',
Ycol = 'latitude',PA= list('nb'=2000,'strat'="random"),
cv = "k-fold",cv.param = c(4,5),metric = "TSS",axes.metric = "prop.correct" ,
verbose = FALSE)
sa_enm_svm <- modelling('SVM',occs$sa, Env =sa_envs,Xcol = 'longitude',
Ycol = 'latitude',PA= list('nb'=2000,'strat'="random"),
cv = "k-fold",cv.param = c(4,5),metric = "TSS",axes.metric = "prop.correct" ,
verbose = FALSE)
sa_enm_mars <- modelling('MARS',occs$sa, Env =sa_envs,Xcol = 'longitude',
Ycol = 'latitude',PA= list('nb'=2000,'strat'="random"),
cv = "k-fold",cv.param = c(4,5),metric = "TSS",axes.metric = "prop.correct" ,
verbose = FALSE)
tt <- sa_enm_mars@binary+ sa_enm_svm@binary + sa_enm_rf@binary + sa_enm_maxent@binary + sa_enm_glm @binary
plot(tt )
sa_enm_mars@evaluation
points(xh_sa$longitude,xh_sa$latitude)
sa_ESDM <- ensemble_modelling(c('GLM', 'MARS','MAXENT','RF','SVM'), occs$sa,Env =sa_envs,
rep = 2, Xcol = 'longitude', Ycol = 'latitude',save = TRUE,path="./sa_enm",
cv = "k-fold",cv.param = c(4,5),PA= list('nb'=2000,'strat'="random"),
metric = "TSS",axes.metric = "prop.correct" ,
uncertainty = TRUE, tmp = FALSE,
ensemble.metric = c("AUC"), ensemble.thresh = c(0.75),
weight = TRUE, verbose = FALSE)
plot(sa_ESDM @uncertainty)
sa_ESDM@algorithm.evaluation
plot(sa_ESDM@binary)
sa_enm_glm_as <- modelling('GLM',occs$as, Env =as_envs,Xcol = 'longitude',
Ycol = 'latitude',PA= list('nb'=2000,'strat'="random"),
cv = "k-fold",cv.param = c(4,5),metric = "TSS",axes.metric = "prop.correct" ,
verbose = FALSE)
warnings()
sa_enm_glm_as@evaluation
ESDM <- ensemble_modelling(c('CTA', 'MARS'), subset(Occurrences, Occurrences$SPECIES == 'elliptica'),
Env, rep = 1, Xcol = 'LONGITUDE', Ycol = 'LATITUDE',
ensemble.thresh = 0, verbose = FALSE)
plot(ESDM@projection, main = 'ESDM\nfor Cryptocarya elliptica\nwith CTA and MARS algorithms')
plot(ESDM@binary, main = 'ESDM\nfor Cryptocarya elliptica\nwith CTA and MARS algorithms')
knitr::kable(ESDM@evaluation)
plot(SDM@projection, main = 'ESDM\nfor Cryptocarya elliptica\nwith CTA and MARS algorithms')
SDM_projection <- project(SDM,Env_new)